home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 November / Chip Kasım 2001.iso / prog / cdcode / bpaint / resource / schemes / mac.cof
Encoding:
Text File  |  2001-01-06  |  42.5 KB  |  1,897 lines

  1. // MAC-Scheme for Cinema4D V6 06/20/2000
  2.  
  3. var SCROLLER_COL_1;
  4. var SCROLLER_COL_2;
  5. var SCROLLER_COL_3;
  6. var SCROLLER_COL_4;
  7. var SCROLLER_COL_5;
  8. var SCROLLER_COL_6;
  9.  
  10. var MENU_COL_1;
  11. var MENU_COL_2;
  12.  
  13. var BORDER_COL_0;
  14. var BORDER_COL_1;
  15. var BORDER_COL_2;
  16. var BORDER_COL_3;
  17. var BORDER_COL_4;
  18. var BORDER_COL_5;
  19. var BORDER_COL_6;
  20. var BORDER_COL_7;
  21. var BORDER_COL_8;
  22. var BORDER_COL_9;
  23. var BORDER_COL_10;
  24. var BORDER_COL_11;
  25.  
  26. guimain()
  27. {
  28.     SCROLLER_COL_1 = vector(238,238,238)/255.0;
  29.     SCROLLER_COL_2 = vector(204,204,255)/255.0;
  30.     SCROLLER_COL_3 = vector(153,153,255)/255.0;
  31.     SCROLLER_COL_4 = vector(102,102,204)/255.0;
  32.     SCROLLER_COL_5 = vector( 51, 51,153)/255.0;
  33.     SCROLLER_COL_6 = vector(  0,  0, 85)/255.0;
  34.  
  35.     MENU_COL_1     = vector( 51, 51,153)/255.0;
  36.     MENU_COL_2     = vector(  0,  0,136)/255.0;
  37.  
  38.     BORDER_COL_0   = vector(255,255,255)/255.0;
  39.     BORDER_COL_1   = vector(238,238,238)/255.0;
  40.     BORDER_COL_2   = vector(221,221,221)/255.0;
  41.     BORDER_COL_3   = vector(204,204,204)/255.0;
  42.     BORDER_COL_4   = vector(187,187,187)/255.0;
  43.     BORDER_COL_5   = vector(170,170,170)/255.0;
  44.     BORDER_COL_6   = vector(153,153,153)/255.0;
  45.     BORDER_COL_7   = vector(136,136,136)/255.0;
  46.     BORDER_COL_8   = vector(119,119,119)/255.0;
  47.     BORDER_COL_9   = vector( 85, 85, 85)/255.0;
  48.     BORDER_COL_10  = vector( 34, 34, 34)/255.0;
  49.     BORDER_COL_11  = vector(  0,  0,  0)/255.0;
  50. }
  51.  
  52. mvector(r,g,b,bf_value)
  53. {
  54.     if (bf_value) return vector(1.0-r*0.7,1.0-g*0.7,1.0-b*0.7);
  55.     return vector(r,g,b);
  56. }
  57.  
  58. svector(r,g,b,enabled)
  59. {
  60.     if (enabled) return vector(r,g,b);
  61.     var h = ((r+g+b)/3.0-200/255.0)*0.4+200/255.0;
  62.     return vector(h,h,h);
  63. }
  64.  
  65. GetBorderSize(frame,left,top,right,bottom,flags)
  66. {
  67.     var drawtext = flags & BORDER_WITH_TITLE;
  68.     flags = flags & BORDER_MASK;
  69.  
  70.     if (flags == BORDER_IN || flags == BORDER_OUT || flags == BORDER_OUT2)
  71.     {
  72.         left = top = right = bottom = 2;
  73.     }
  74.     else if (flags == BORDER_GROUP_IN || flags == BORDER_GROUP_OUT)
  75.     {
  76.         left = top = right = bottom = 2;
  77.     }
  78.     else if (flags == BORDER_THIN_IN || flags == BORDER_THIN_OUT || flags == BORDER_BLACK)
  79.     {
  80.         left = top = right = bottom = 1;
  81.     }
  82.     else if (flags == BORDER_OUT3)
  83.     {
  84.         left = right = bottom = 1;
  85.         top = 0;
  86.     }
  87.     else if (flags == BORDER_ACTIVE_1 || flags == BORDER_ACTIVE_2)
  88.     {
  89.         left = top = right = bottom = 1;
  90.     }
  91.     else if (flags == BORDER_GROUP_TOP)
  92.     {
  93.         top = 2;
  94.         left = right = bottom = 0;
  95.     }
  96.     else
  97.     {
  98.         left = top = right = bottom = 0;
  99.     }
  100.  
  101.     if (drawtext)
  102.     {
  103.         frame->BfDrawBegin();
  104.         top = frame->BfDrawGetFontHeight();
  105.         frame->BfDrawEnd();
  106.     }
  107. }
  108.  
  109.  
  110. DrawBorder(frame,x1,y1,x2,y2,flags)
  111. {
  112.     var drawtext = flags & BORDER_WITH_TITLE;
  113.     var oy = y1;
  114.     flags = flags & BORDER_MASK;
  115.  
  116.     if (drawtext)
  117.     {
  118.         frame->BfDrawSetPen(COLOR_BG);
  119.         var top = frame->BfDrawGetFontHeight();
  120.         frame->BfDrawRectangle(x1,y1,x2,y1+top-1);
  121.         y1 += frame->BfDrawGetFontHeight()/2;
  122.     }
  123.     if (flags == BORDER_IN)
  124.     {
  125.         var c1,c2,c3,c4;
  126.         var enabled = frame->CfIsEnabled(TRUE);
  127.         c1 = svector(136/255.0,136/255.0,136/255.0,enabled);
  128.         c2 = svector(248/255.0,248/255.0,248/255.0,enabled);
  129.         c3 = svector(0,0,0,enabled);
  130.  
  131.         frame->BfDrawSetPen(c1);
  132.         frame->BfDrawLine(x1,y1+1,x1,y2-1);
  133.         frame->BfDrawLine(x1+1,y1,x2-1,y1);
  134.         frame->BfDrawSetPen(c2);
  135.         frame->BfDrawLine(x2,y1+1,x2,y2-1);
  136.         frame->BfDrawLine(x1+1,y2,x2-1,y2);
  137.  
  138.         frame->BfDrawSetPen(COLOR_BG);
  139.         frame->BfDrawLine(x1,y1,x1,y1);
  140.         frame->BfDrawLine(x2,y1,x2,y1);
  141.         frame->BfDrawLine(x1,y2,x1,y2);
  142.         frame->BfDrawLine(x2,y2,x2,y2);
  143.  
  144.         x1+=1;y1+=1;x2-=1;y2-=1;
  145.  
  146.         frame->BfDrawSetPen(c3);
  147.         frame->BfDrawLine(x1,y1,x1,y2);
  148.         frame->BfDrawLine(x1,y1,x2,y1);
  149.         frame->BfDrawLine(x2,y1,x2,y2);
  150.         frame->BfDrawLine(x1,y2,x2,y2);
  151.  
  152.     }
  153.     else if (flags == BORDER_OUT || flags == BORDER_OUT2)
  154.     {
  155.         var c1,c2,c3,c4;
  156.         if (flags == BORDER_OUT)    {    c1 = COLOR_EDGEWH;    c2 = COLOR_EDGEBL;    c3 = COLOR_EDGELT; c4 = COLOR_EDGEDK;}
  157.         else if (flags == BORDER_OUT2){    c1 = COLOR_EDGELT;    c2 = COLOR_EDGEBL;    c3 = COLOR_EDGEWH; c4 = COLOR_EDGEDK;}
  158.  
  159.         frame->BfDrawSetPen(c1);
  160.         frame->BfDrawLine(x1,y1,x1,y2);
  161.         frame->BfDrawLine(x1,y1,x2,y1);
  162.         frame->BfDrawSetPen(c2);
  163.         frame->BfDrawLine(x2,y1+1,x2,y2);
  164.         frame->BfDrawLine(x1+1,y2,x2,y2);
  165.  
  166.         x1+=1;y1+=1;x2-=1;y2-=1;
  167.  
  168.         frame->BfDrawSetPen(c3);
  169.         frame->BfDrawLine(x1,y1,x1,y2);
  170.         frame->BfDrawLine(x1,y1,x2,y1);
  171.  
  172.         frame->BfDrawSetPen(c4);
  173.         frame->BfDrawLine(x2,y1+1,x2,y2);
  174.         frame->BfDrawLine(x1+1,y2,x2,y2);
  175.     }
  176.     else if (flags == BORDER_OUT3)
  177.     {
  178.         var c1,c2,c3,c4;
  179. //        c1 = COLOR_EDGEWH;    c2 = COLOR_EDGEBL;    c3 = COLOR_EDGELT; c4 = COLOR_EDGEDK;
  180.         c1 = COLOR_EDGEWH;    c2 = COLOR_EDGEDK;    c3 = COLOR_EDGELT; c4 = COLOR_BG;
  181.  
  182.         frame->BfDrawSetPen(c1);
  183.         frame->BfDrawLine(x1,y1,x1,y2);
  184.         frame->BfDrawSetPen(c2);
  185.         frame->BfDrawLine(x2,y1,x2,y2);
  186.         frame->BfDrawLine(x1+1,y2,x2,y2);
  187.  
  188.         x1+=1;x2-=1;y2-=1;
  189.  
  190. //        frame->BfDrawSetPen(c3);
  191. //        frame->BfDrawLine(x1,y1,x1,y2);
  192.  
  193. //        frame->BfDrawSetPen(c4);
  194. //        frame->BfDrawLine(x2,y1,x2,y2);
  195. //        frame->BfDrawLine(x1+1,y2,x2,y2);
  196.     }
  197.     else if (flags == BORDER_GROUP_IN || flags == BORDER_GROUP_OUT)
  198.     {
  199.         var c1,c2;
  200.         if (flags == BORDER_GROUP_IN) { c1 = COLOR_EDGEWH; c2 = COLOR_EDGEDK; }
  201.         else { c2 = COLOR_EDGEWH; c1 = COLOR_EDGEDK; }
  202.  
  203.         frame->BfDrawSetPen(c1);
  204.         frame->BfDrawLine(x2,y1,x2,y2);
  205.         frame->BfDrawLine(x1,y2,x2,y2);
  206.  
  207.         frame->BfDrawSetPen(c2);
  208.         frame->BfDrawLine(x1,y1,x1,y2-1);
  209.         frame->BfDrawLine(x1,y1,x2-1,y1);
  210.  
  211.         x1+=1;y1+=1;
  212.         x2-=1;y2-=1;
  213.  
  214.         frame->BfDrawSetPen(c1);
  215.         frame->BfDrawLine(x1,y1,x1,y2);
  216.         frame->BfDrawLine(x1,y1,x2,y1);
  217.  
  218.         frame->BfDrawSetPen(c2);
  219.         frame->BfDrawLine(x2,y1,x2,y2);
  220.         frame->BfDrawLine(x1,y2,x2,y2);
  221.     }
  222.     else if (flags == BORDER_THIN_IN || flags == BORDER_THIN_OUT || flags == BORDER_BLACK || flags == BORDER_ACTIVE_1 || flags == BORDER_ACTIVE_2)
  223.     {
  224.         var c1,c2;
  225.         if (flags == BORDER_THIN_IN)       { c1 = COLOR_EDGEDK; c2 = COLOR_EDGEWH; }
  226.         else if (flags == BORDER_THIN_OUT) { c1 = COLOR_EDGEWH; c2 = COLOR_EDGEDK; }
  227.         //else if (flags == BORDER_ACTIVE_1) {    c1 = vector(1,72.0/255.0,29.0/255.0);    c2 = c1; }
  228.         else if (flags == BORDER_ACTIVE_1) {    c1 = vector(72.0/255.0,72.0/255.0,1.0);    c2 = c1; }
  229.         else if (flags == BORDER_ACTIVE_2) {    c1 = COLOR_BG; c2 = c1; }
  230.         else { c1 = BfBLACK; c2 = BfBLACK; }
  231.  
  232.         frame->BfDrawSetPen(c1);
  233.         frame->BfDrawLine(x1,y1,x1,y2-1);
  234.         frame->BfDrawLine(x1,y1,x2,y1);
  235.  
  236.         frame->BfDrawSetPen(c2);
  237.         frame->BfDrawLine(x2,y1+1,x2,y2);
  238.         frame->BfDrawLine(x1,y2,x2,y2);
  239.     }
  240.     else if (flags == BORDER_GROUP_TOP)
  241.     {
  242.         var c1,c2;
  243.         c2 = COLOR_EDGEWH;
  244.         c1 = COLOR_EDGEDK;
  245.  
  246.         frame->BfDrawSetPen(c1);
  247.         frame->BfDrawLine(x1,y1,x2-1,y1);
  248.  
  249.         y1+=1;
  250.  
  251.         frame->BfDrawSetPen(c2);
  252.         frame->BfDrawLine(x1,y1,x2,y1);
  253.     }
  254.  
  255.     if (drawtext)
  256.     {
  257.         frame->BfDrawSetPen(COLOR_BG);
  258.         var top = frame->BfDrawGetFontHeight();
  259.         var w = frame->BfDrawGetTextWidth(frame->bf_title);
  260.         if (w>x2-x1-10) w = x2-x1-10;
  261.         frame->BfDrawRectangle(x1+6-2,oy,x1+w+6+2,oy+top-1);
  262.  
  263.         if (frame->CfIsEnabled(TRUE))
  264.         {
  265.             frame->BfDrawSetTextCol(COLOR_TEXT,COLOR_BG);
  266.             frame->CfDrawTextClipped(x1+6,oy,w,frame->bf_title);
  267.         }
  268.         else
  269.         {
  270.             frame->BfDrawSetTextCol(COLOR_EDGEWH,COLOR_TRANS);
  271.             frame->CfDrawTextClipped(x1+7,oy+1,w,frame->bf_title);
  272.             frame->BfDrawSetTextCol(COLOR_EDGEDK,COLOR_TRANS);
  273.             frame->CfDrawTextClipped(x1+6,oy,w,frame->bf_title);
  274.         }
  275.     }
  276. }
  277.  
  278.  
  279.  
  280.  
  281. class Button : defButton
  282. {
  283.     public:
  284.         Button(_id_,_title_,_bi_,_min_,_max_,_val_);
  285.         CfRedraw(xr1,yr1,xr2,yr2);
  286. };
  287.  
  288. Button::Button(_id_,_title_,_bi_,_min_,_max_,_val_)
  289. {
  290.     super(_id_,_title_,_bi_,_min_,_max_,_val_);
  291.     cfTabStop = FALSE; // so it's maclike :-)
  292. }
  293.  
  294. Button::CfRedraw(xr1,yr1,xr2,yr2)
  295. {
  296.     BfOffScreenOn();
  297.  
  298.     var x,y,w,h;
  299.  
  300.     var bg = COLOR_BG, fg = COLOR_TEXT;
  301.     var enabled = CfIsEnabled(TRUE);
  302.  
  303.     BfDrawSetPen(bg);
  304.     BfDrawRectangle(0,0,bf_sw-1,bf_sh-1);
  305.  
  306.     if (bf_value) { fg = svector(1,1,1,enabled); bg = svector(128/255.0,128/255.0,128/255.0,enabled); }
  307.  
  308.     BfDrawSetPen(bg);
  309.     BfDrawRectangle(1,1,bf_sw-2,bf_sh-2);
  310.  
  311.     w = bf_sw-1;
  312.     h = bf_sh-1;
  313.  
  314.     // black lines
  315.     BfDrawSetPen(svector(0,0,0,enabled));
  316.     BfDrawLine(2,0,w-2,0);
  317.     BfDrawLine(w-2,0,w,2);
  318.     BfDrawLine(w,2,w,h-2);
  319.     BfDrawLine(w,h-2,w-2,h);
  320.     BfDrawLine(w-2,h,2,h);
  321.     BfDrawLine(2,h,0,h-2);
  322.     BfDrawLine(0,h-2,0,2);
  323.     BfDrawLine(0,2,2,0);
  324.  
  325.     // grey lines
  326.     BfDrawSetPen(mvector(184/255.0,184/255.0,184/255.0,bf_value));
  327.     BfDrawLine(2,1,1,2);
  328.     BfDrawLine(w-2,1,w-1,2);
  329.     BfDrawLine(2,h-1,1,h-2);
  330.  
  331.     // grey lines
  332.     BfDrawSetPen(mvector(216/255.0,216/255.0,216/255.0,bf_value));
  333.     BfDrawLine(3,1,w-2,1);
  334.     BfDrawLine(1,3,1,h-3);
  335.  
  336.     // grey lines
  337.     BfDrawSetPen(mvector(112/255.0,112/255.0,112/255.0,bf_value));
  338.     BfDrawLine(3,h-1,w-2,h-1);
  339.     BfDrawLine(w-1,3,w-1,h-2);
  340.     BfDrawLine(w-2,h-2,w-2,h-2);
  341.  
  342.     // grey lines
  343.     BfDrawSetPen(mvector(168/255.0,168/255.0,168/255.0,bf_value));
  344.     BfDrawLine(3,h-2,w-3,h-2);
  345.     BfDrawLine(w-2,3,w-2,h-3);
  346.     BfDrawLine(w-3,h-3,w-3,h-3);
  347.  
  348.     // white lines
  349.     BfDrawSetPen(mvector(255/255.0,255/255.0,255/255.0,bf_value));
  350.     BfDrawLine(2,2,w-3,2);
  351.     BfDrawLine(2,2,2,h-3);
  352.     BfDrawLine(3,3,3,3);
  353.  
  354.     x=2;
  355.     y=1;
  356.  
  357.     if (enabled)
  358.     {
  359.         BfDrawSetTextCol(fg,COLOR_TRANS);
  360.         CfDrawTextClippedCenter(x,y,bf_sw-4,bf_sh-2,bf_title,CENTER_ALL);
  361.     }
  362.     else
  363.     {
  364.         BfDrawSetTextCol(COLOR_EDGEWH,COLOR_TRANS);
  365.         CfDrawTextClippedCenter(x+1,y+1,bf_sw-4,bf_sh-2,bf_title,CENTER_ALL);
  366.         BfDrawSetTextCol(COLOR_EDGEDK,COLOR_TRANS);
  367.         CfDrawTextClippedCenter(x,y,bf_sw-4,bf_sh-2,bf_title,CENTER_ALL);
  368.     }
  369. }
  370.  
  371.  
  372.  
  373. class CheckBox : defCheckBox
  374. {
  375.     public:
  376.         CheckBox(_id_,_title_,_bi_,_min_,_max_,_val_);
  377.         CfRedraw(xr1,yr1,xr2,yr2);
  378. };
  379.  
  380. CheckBox::CheckBox(_id_,_title_,_bi_,_min_,_max_,_val_)
  381. {
  382.     super(_id_,_title_,_bi_,_min_,_max_,_val_);
  383.     cfTabStop = FALSE; // so it's maclike :-)
  384. }
  385.  
  386. CheckBox::CfRedraw(xr1,yr1,xr2,yr2)
  387. {
  388.     BfOffScreenOn();
  389.  
  390.     var x,y;
  391.     var tw,fh;
  392.  
  393.     var bg = COLOR_BG, fg = COLOR_TEXT;
  394.     var enabled = CfIsEnabled(TRUE);
  395.  
  396.     BfOffScreenOn();
  397.  
  398.     //if (enabled && CfGetFocus()==FOCUS_ON) bg = COLOR_BGFOCUS;
  399.  
  400.     BfDrawSetPen(COLOR_BG);
  401.     BfDrawRectangle(0,0,bf_sw-1,bf_sh-1);
  402.  
  403.     tw=BfDrawGetTextWidth(bf_title);
  404.     fh=BfDrawGetFontHeight();
  405.     y=(bf_sh-14)/2;
  406.  
  407.     // grey lines
  408.     if (enabled)
  409.     {
  410.         BfDrawSetPen(vector(0,0,0));
  411.     }
  412.     else
  413.     {
  414.         BfDrawSetPen(vector(112/255.0,112/255.0,112/255.0));
  415.     }
  416.     BfDrawLine(0,y,13,y);
  417.     BfDrawLine(13,y,13,y+13);
  418.     BfDrawLine(13,y+13,0,y+13);
  419.     BfDrawLine(0,y+13,0,y);
  420.  
  421.     if (enabled)
  422.     {
  423.         // grey lines
  424.         BfDrawSetPen(vector(248/255.0,248/255.0,248/255.0));
  425.         BfDrawLine(1,y+1,13-1,y+1);
  426.         BfDrawLine(1,y+13-1,1,y+1);
  427.  
  428.         // grey lines
  429.         BfDrawSetPen(vector(136/255.0,136/255.0,136/255.0));
  430.         BfDrawLine(13-1,y+1,13-1,y+13-1);
  431.         BfDrawLine(13-1,y+13-1,1,y+13-1);
  432.     }
  433.     if (bf_value)
  434.     {
  435.         GaDrawCheckMark(0,y,enabled ? COLOR_EDGEBL : vector(112/255.0,112/255.0,112/255.0));
  436.     }
  437.  
  438.     if (sizeof(bf_title)>0)
  439.     {
  440.         x=14+fh/4;
  441.         y=(bf_sh-fh)/2;
  442.  
  443.         tw = Min(tw,bf_sw-16);
  444.  
  445.         if (enabled)
  446.         {
  447.             BfDrawSetTextCol(fg,bg);
  448.             CfDrawTextClipped(x,y,tw,bf_title);
  449.         }
  450.         else
  451.         {
  452.             BfDrawSetTextCol(vector(112/255.0,112/255.0,112/255.0),bg);
  453.             CfDrawTextClipped(x,y,tw,bf_title);
  454.         }
  455.     }
  456. }
  457.  
  458.  
  459.  
  460.  
  461.  
  462. class EditText : defEditText
  463. {
  464.     public:
  465.         EditText(_id_,_title_,_bi_,_min_,_max_,_val_);
  466.         CfRedraw(xr1,yr1,xr2,yr2);
  467. };
  468.  
  469. EditText::EditText(_id_,_title_,_bi_,_min_,_max_,_val_)
  470. {
  471.     super(_id_,_title_,_bi_,_min_,_max_,_val_);
  472. }
  473.  
  474. EditText::CfRedraw(xr1,yr1,xr2,yr2)
  475. {
  476.     BfOffScreenOn();
  477.  
  478.     var x,y,w,h,str;
  479.     var bg = COLOR_BGEDIT;
  480.  
  481.     var enabled = CfIsEnabled(TRUE);
  482.  
  483.     BfDrawSetPen(enabled ? bg : COLOR_BG);
  484.     BfDrawRectangle(0,0,bf_sw-1,bf_sh-1);
  485.  
  486.     CfDrawBorder(0,0,bf_sw-1,bf_sh-1,borderstyle?BORDER_IN:BORDER_NONE);
  487.  
  488.     h = BfDrawGetFontHeight();
  489.     x = hborder+offsx;
  490.     y = (bf_sh-h)/2;
  491.  
  492.     BfSetClippingRegion(hborder,2,bf_sw-2*hborder,bf_sh-4);
  493.     if (curpos!=blkpos && CfGetFocus()==FOCUS_ON && enabled)
  494.     {
  495.         var x1 = blkpos;
  496.         var x2 = curpos;
  497.         var w;
  498.         var xx = x;
  499.         if (x2<x1) { var t=x1;x1=x2;x2=t; };
  500.  
  501.         if (x1>0)
  502.         {
  503.             str = strmid(bf_title,0,x1);
  504.             if (str)
  505.             {
  506.                 BfDrawSetTextCol(COLOR_TEXT,bg);
  507.                 BfDrawTextNew(str,xx,y,TEXT_AUTO,TEXT_AUTO,TEXT_STD);
  508.                 w   = BfDrawGetTextWidth(str);
  509.                 xx += w;
  510.             }
  511.         }
  512.  
  513.         str = strmid(bf_title,x1,x2-x1);
  514.         if (str)
  515.         {
  516.             BfDrawSetTextCol(COLOR_FGSELECTEDTEXT,COLOR_BGSELECTEDTEXT);
  517.             BfDrawTextNew(str,xx,y,TEXT_AUTO,TEXT_AUTO,TEXT_STD);
  518.             w   = BfDrawGetTextWidth(str);
  519.             xx += w;
  520.         }
  521.  
  522.         str = strmid(bf_title,x2,sizeof(bf_title));
  523.         if (str)
  524.         {
  525.             BfDrawSetTextCol(COLOR_TEXT,bg);
  526.             BfDrawTextNew(str,xx,y,TEXT_AUTO,TEXT_AUTO,TEXT_STD);
  527.         }
  528.     }
  529.     else
  530.     {
  531.         BfDrawSetTextCol(enabled ? COLOR_TEXT : COLOR_EDGEDK,COLOR_TRANS);
  532.         BfDrawTextNew(bf_title,x,y,TEXT_AUTO,TEXT_AUTO,TEXT_STD);
  533.     }
  534.  
  535.     if (CfGetFocus()==FOCUS_ON && enabled)
  536.     {
  537.         var w = BfDrawGetTextWidth(bf_title,0,curpos);
  538.         BfDrawSetPen(BfBLACK);
  539.         BfDrawLine(x+w,y,x+w,y+h);
  540.         BfDrawLine(x+w+1,y,x+w+1,y+h);
  541.     }
  542. }
  543.  
  544.  
  545.  
  546.  
  547. class ComboBox : defComboBox
  548. {
  549.     public:
  550.         ComboBox(_id_,_title_,_bi_,_min_,_max_,_val_);
  551.         CfRedraw(xr1,yr1,xr2,yr2);
  552. };
  553.  
  554. ComboBox::ComboBox(_id_,_title_,_bi_,_min_,_max_,_val_)
  555. {
  556.     super(_id_,_title_,_bi_,_min_,_max_,_val_);
  557.     cfTabStop = FALSE; // so it's maclike :-)
  558. }
  559.  
  560.  
  561. ComboBox::CfRedraw(xr1,yr1,xr2,yr2)
  562. {
  563.     BfOffScreenOn();
  564.  
  565.     var x,y,w,h,fg = COLOR_TEXT;
  566.     var enabled = CfIsEnabled(TRUE);
  567.     var bg = COLOR_BG;
  568.  
  569.     BfDrawSetPen(bg);
  570.     BfDrawRectangle(0,0,bf_sw-1,bf_sh-1);
  571.  
  572.     if (intrack) { fg = vector(1,1,1); bg = vector(128/255.0,128/255.0,128/255.0); }
  573.  
  574.     BfDrawSetPen(bg);
  575.     BfDrawRectangle(1,1,bf_sw-2,bf_sh-2);
  576.  
  577.     w = bf_sw-1;
  578.     h = bf_sh-1;
  579.  
  580.     // black lines
  581.     BfDrawSetPen(vector(0,0,0));
  582.     BfDrawLine(2,0,w-2,0);
  583.     BfDrawLine(w-2,0,w,2);
  584.     BfDrawLine(w,2,w,h-2);
  585.     BfDrawLine(w,h-2,w-2,h);
  586.     BfDrawLine(w-2,h,2,h);
  587.     BfDrawLine(2,h,0,h-2);
  588.     BfDrawLine(0,h-2,0,2);
  589.     BfDrawLine(0,2,2,0);
  590.  
  591.     // white lines
  592.     BfDrawSetPen(mvector(248/255.0,248/255.0,248/255.0,intrack));
  593.     BfDrawLine(2,1,w-2,1);
  594.     BfDrawLine(1,2,1,h-2);
  595.  
  596.     // white lines
  597.     BfDrawSetPen(mvector(168/255.0,168/255.0,168/255.0,intrack));
  598.     BfDrawLine(w-1,2,w-1,h-2);
  599.     BfDrawLine(2,h-1,w-2,h-1);
  600.  
  601.     h=BfDrawGetFontHeight();
  602.     x=3;
  603.     y=(bf_sh-h)/2;
  604.  
  605.     var txt = GetEntry(bf_value);
  606.     if (txt && txt->text)
  607.     {
  608.         BfDrawSetTextCol(enabled ? fg : COLOR_EDGEDK,bg);
  609.         CfDrawTextClipped(x,y,bf_sw-h-8,txt->text);
  610.     }
  611.     x = bf_sw-h-3-3;
  612.     h = bf_sh-1;
  613. //    GaDrawFrame(x,2,bf_sw-3,bf_sh-3,BORDER_OUT2,bg);
  614.     y=(bf_sh)/2;
  615.     DrawArrow(this,x+1,y-5,bf_sw-3,y-1,enabled ? COLOR_EDGEBL : COLOR_EDGEDK,ARROW_UP);
  616.     DrawArrow(this,x+1,y+1,bf_sw-3,y+5,enabled ? COLOR_EDGEBL : COLOR_EDGEDK,ARROW_DOWN);
  617.  
  618.     // white lines
  619.     BfDrawSetPen(mvector(216/255.0,216/255.0,216/255.0,intrack));
  620.     BfDrawLine(x,1,w-2,1);
  621.  
  622.     BfDrawSetPen(mvector(168/255.0,168/255.0,168/255.0,intrack));
  623.     BfDrawLine(x,2,x,h-2);
  624.     BfDrawLine(w-2,3,w-2,h-3);
  625.     BfDrawLine(x+3,h-2,w-3,h-2);
  626.  
  627.     BfDrawSetPen(mvector(248/255.0,248/255.0,248/255.0,intrack));
  628.     BfDrawLine(x+2,3,x+2,h-3);
  629.     BfDrawLine(x+2,2,w-3,2);
  630.  
  631.     BfDrawSetPen(mvector(112/255.0,112/255.0,112/255.0,intrack));
  632.     BfDrawLine(w-1,2,w-1,h-2);
  633.     BfDrawLine(x+2,h-1,w-2,h-1);
  634.     BfDrawLine(w-2,h-2,w-2,h-2);
  635.  
  636.     return TRUE;
  637. }
  638.  
  639.  
  640.  
  641.  
  642. class Slider : defSlider
  643. {
  644.     public:
  645.         Slider(_id_,_title_,_bi_,_min_,_max_,_val_);
  646.         CfRedraw(xr1,yr1,xr2,yr2);
  647. };
  648.  
  649. Slider::Slider(_id_,_title_,_bi_,_min_,_max_,_val_)
  650. {
  651.     super(_id_,_title_,_bi_,_min_,_max_,_val_);
  652.  
  653.     cfTabStop = FALSE; // so it's maclike :-)
  654.     slThumbMin = 13;
  655.     slThumbW=slThumbMin;
  656. }
  657.  
  658. Slider::CfRedraw(xr1,yr1,xr2,yr2)
  659. {
  660.     BfOffScreenOn();
  661.  
  662. //    println("Range ",bf_min,bf_max);
  663.  
  664.     var x1,y1,x2,y2,w,h,x;
  665.     var enabled = CfIsEnabled(TRUE);
  666.  
  667.     SlCalcThumbPos();
  668.  
  669.     BfDrawSetPen(COLOR_BG);
  670.     BfDrawRectangle(0,0,bf_sw-1,bf_sh-1);
  671.  
  672.     x1=0;
  673.     y1=(bf_sh-slRailH)/2;
  674.     x2=x1+(bf_sw)-1;
  675.     y2=y1+slRailH-1;
  676.  
  677.     var y = bf_sh/2;
  678.     w = bf_sw-1;
  679.  
  680.     BfDrawSetPen(vector(168/255.0,168/255.0,168/255.0));
  681.     BfDrawRectangle(2,y-1,w-2,y+1);
  682.  
  683.     BfDrawSetPen(svector(0/255.0,0/255.0,0/255.0,enabled));
  684.     BfDrawLine(2,y-2,w-2,y-2);
  685.     BfDrawLine(2,y+2,w-2,y+2);
  686.     BfDrawLine(1,y-1,1,y+1);
  687.     BfDrawLine(w-1,y-1,w-1,y+1);
  688.  
  689.     BfDrawSetPen(svector(168/255.0,168/255.0,168/255.0,enabled));
  690.     BfDrawLine(1,y-3,w-2,y-3);
  691.     BfDrawLine(1,y-2,1,y-2);
  692.     BfDrawLine(w-1,y-2,w-1,y-2);
  693.     BfDrawLine(0,y-2,0,y+1);
  694.  
  695.     BfDrawSetPen(svector(248/255.0,248/255.0,248/255.0,enabled));
  696.     BfDrawLine(2,y+3,w-1,y+3);
  697.     BfDrawLine(w,y-1,w,y+2);
  698.     BfDrawLine(1,y+2,1,y+2);
  699.     BfDrawLine(w-1,y+2,w-1,y+2);
  700.  
  701.     if (intrack) BfDrawSetPen(svector(132/255.0,132/255.0,228/255.0,enabled));
  702.     else BfDrawSetPen(svector(152/255.0,152/255.0,248/255.0,enabled));
  703.     BfDrawRectangle(slTx1+1,slTy1+1,slTx2-1,slTy2-1);
  704.  
  705.     BfDrawSetPen(svector(0/255.0,0/255.0,0/255.0,enabled));
  706.     BfDrawLine(slTx1+1,slTy1,slTx2-1,slTy1);
  707.     BfDrawLine(slTx1,slTy1+1,slTx1,slTy2-1);
  708.     BfDrawLine(slTx1+1,slTy2,slTx2-1,slTy2);
  709.     BfDrawLine(slTx2,slTy1+1,slTx2,slTy2-1);
  710.  
  711.     BfDrawSetPen(svector(200/255.0,200/255.0,248/255.0,enabled));
  712.     BfDrawLine(slTx1+2,slTy1+1,slTx2-2,slTy1+1);
  713.     BfDrawLine(slTx1+1,slTy1+2,slTx1+1,slTy2-2);
  714.  
  715.     BfDrawSetPen(svector(96/255.0,96/255.0,200/255.0,enabled));
  716.     BfDrawLine(slTx2-1,slTy1+2,slTx2-1,slTy2-1);
  717.     BfDrawLine(slTx1+1,slTy2-1,slTx2-1,slTy2-1);
  718.  
  719.     for (x = slTx1+3; x<slTx2-4; x+=2)
  720.     {
  721.         BfDrawSetPen(svector(200/255.0,200/255.0,248/255.0,enabled));
  722.         BfDrawLine(x,slTy1+4,x,slTy2-5);
  723.         BfDrawSetPen(svector(48/255.0,48/255.0,152/255.0,enabled));
  724.         BfDrawLine(x+1,slTy1+5,x+1,slTy2-4);
  725.     }
  726. }
  727.  
  728.  
  729.  
  730.  
  731. class UpDownButton : defUpDownButton
  732. {
  733.     public:
  734.         UpDownButton(_id_,_title_,_bi_,_min_,_max_,_val_);
  735.         CfRedraw(xr1,yr1,xr2,yr2);
  736. };
  737.  
  738. UpDownButton::UpDownButton(_id_,_title_,_bi_,_min_,_max_,_val_)
  739. {
  740.     super(_id_,_title_,_bi_,_min_,_max_,_val_);
  741.     cfTabStop = FALSE; // so it's maclike :-)
  742. }
  743.  
  744.  
  745.  
  746. UpDownButton::CfRedraw(xr1,yr1,xr2,yr2)
  747. {
  748.     var h=bf_sh&~1;
  749.  
  750.     var x,y,w,xx=0,yy=0,y2 = (h-1)/2;
  751.     var bg = COLOR_BGGADGET;
  752.     var enabled = CfIsEnabled(TRUE);
  753.  
  754.     BfOffScreenOn();
  755.  
  756.     if (bf_value&1) bg = COLOR_BGFOCUS;
  757.     BfDrawSetPen(bg);
  758.     BfDrawRectangle(0,0,bf_sw-1,y2);
  759.  
  760.     if (bf_value&2) bg = COLOR_BGFOCUS;
  761.     else bg = COLOR_BGGADGET;
  762.  
  763.     BfDrawSetPen(bg);
  764.     BfDrawRectangle(0,y2+1,bf_sw-1,bf_sh-1);
  765.  
  766. //    CfDrawBorder(0,0,bf_sw-1,bf_sh-1,BORDER_OUT2);
  767.  
  768.     DrawArrow(this,1,y2-4,bf_sw-2,y2,enabled ? COLOR_EDGEBL : COLOR_EDGEDK,ARROW_SMALL_UP);
  769.     DrawArrow(this,1,y2+2,bf_sw-2,y2+6, enabled ? COLOR_EDGEBL : COLOR_EDGEDK,ARROW_SMALL_DOWN);
  770.  
  771.     x = -1; y=-1;
  772.     w = bf_sw;
  773.     h = bf_sh;
  774.  
  775.     // white lines
  776.     BfDrawSetPen(svector(216/255.0,216/255.0,216/255.0,enabled));
  777.     BfDrawLine(x,y+1,w-2,y+1);
  778.  
  779.     BfDrawSetPen(svector(168/255.0,168/255.0,168/255.0,enabled));
  780.     BfDrawLine(x+1,y+2,x+1,h-2);
  781.     BfDrawLine(w-2,y+3,w-2,h-3);
  782.     BfDrawLine(x+3,h-2,w-3,h-2);
  783.  
  784.     BfDrawSetPen(svector(248/255.0,248/255.0,248/255.0,enabled));
  785.     BfDrawLine(x+2,y+3,x+2,h-3);
  786.     BfDrawLine(x+2,y+2,w-3,y+2);
  787.  
  788.     BfDrawSetPen(svector(112/255.0,112/255.0,112/255.0,enabled));
  789.     BfDrawLine(w-1,y+2,w-1,h-2);
  790.     BfDrawLine(x+2,h-1,w-2,h-1);
  791.     BfDrawLine(w-2,h-2,w-2,h-2);
  792. }
  793.  
  794.  
  795.  
  796. class ScrollerH : defScrollerH
  797. {
  798.         var last;
  799.  
  800.     public:
  801.         ScrollerH(_id_,_title_,_bi_,_min_,_max_,_val_);
  802.         CbMessage(m);
  803. }
  804.  
  805. ScrollerH::ScrollerH(_id_,_title_,_bi_,_min_,_max_,_val_)
  806. {
  807.     super(_id_,_title_,_bi_,_min_,_max_,_val_);
  808.     BgSetBorderStyle(BORDER_NONE);
  809.     GgSetSpace(1,1);
  810.     GgSetBorder(1,1,1,1);
  811.     BfSetDefaultColor(COLOR_BG,BfBLACK);
  812.     last = TRUE;
  813. }
  814.  
  815. ScrollerH::CbMessage(m)
  816. {
  817.     var res,on;
  818.  
  819.     switch (m->GetId())
  820.     {
  821.         case BFM_ENABLE:
  822.         case BFM_DISABLE:
  823.             res = super::CbMessage(m);
  824.             on = CfIsEnabled(FALSE);
  825.             if (on!=last)
  826.             {
  827.                 if (on)
  828.                     BfSetDefaultColor(COLOR_BG,BfBLACK);
  829.                 else
  830.                     BfSetDefaultColor(COLOR_BG,BORDER_COL_6);
  831.                 Redraw();
  832.                 last = on;
  833.             }
  834.             break;
  835.     }
  836.     return super::CbMessage(m);
  837. }
  838.  
  839.  
  840.  
  841. class ScrollerV: defScrollerV
  842. {
  843.         var last;
  844.     public:
  845.         ScrollerV(_id_,_title_,_bi_,_min_,_max_,_val_);
  846.         CbMessage(m);
  847. }
  848.  
  849. ScrollerV::ScrollerV(_id_,_title_,_bi_,_min_,_max_,_val_)
  850. {
  851.     super(_id_,_title_,_bi_,_min_,_max_,_val_);
  852.     BgSetBorderStyle(BORDER_NONE);
  853.     GgSetSpace(1,1);
  854.     GgSetBorder(1,1,1,1);
  855.     BfSetDefaultColor(COLOR_BG,BfBLACK);
  856.     last = TRUE;
  857. }
  858.  
  859. ScrollerV::CbMessage(m)
  860. {
  861.     var res,on;
  862.  
  863.     switch (m->GetId())
  864.     {
  865.         case BFM_ENABLE:
  866.         case BFM_DISABLE:
  867.             res = super::CbMessage(m);
  868.             on = CfIsEnabled(FALSE);
  869.             if (on!=last)
  870.             {
  871.                 if (on)
  872.                     BfSetDefaultColor(COLOR_BG,BfBLACK);
  873.                 else
  874.                     BfSetDefaultColor(COLOR_BG,BORDER_COL_6);
  875.                 Redraw();
  876.                 last = on;
  877.             }
  878.             break;
  879.     }
  880.     return super::CbMessage(m);
  881. }
  882.  
  883.  
  884.  
  885. class Scroller_V : defScroller_V
  886. {
  887.     public:
  888.         Scroller_V(_id_,_title_,_bi_,_min_,_max_,_val_);
  889.         CfRedraw(xr1,yr1,xr2,yr2);
  890. };
  891.  
  892.  
  893. Scroller_V::Scroller_V(_id_,_title_,_bi_,_min_,_max_,_val_)
  894. {
  895.     super(_id_,_title_,_bi_,_min_,_max_,_val_);
  896.     cfTabStop = FALSE; // so it's maclike :-)
  897.     slThumbMin = 15;
  898.     slThumbH = slThumbMin;
  899. }
  900.  
  901.  
  902. Scroller_V::CfRedraw(xr1,yr1,xr2,yr2)
  903. {
  904.     BfOffScreenOn();
  905.  
  906.     var x1,y1,x2,y2,w,h,x,n;
  907.     var enabled = CfIsEnabled(TRUE);
  908.  
  909.     SlCalcThumbPos();
  910.  
  911.     if (enabled)
  912.     {
  913.         w = bf_sw-1;
  914.         h = bf_sh-1;
  915.  
  916.         x1 = slTx1;
  917.         x2 = slTx2;
  918.         y1 = slTy1;
  919.         y2 = slTy2;
  920.  
  921.         BfDrawSetPen(BORDER_COL_5);
  922.         BfDrawRectangle(0,0,w,h);
  923.  
  924.         BfDrawSetPen(BORDER_COL_8);
  925.         BfDrawLine(0,0,w,0);
  926.         BfDrawLine(0,0,0,h);
  927.         if (y2+1<bf_sh) BfDrawLine(0,y2+1,w,y2+1);
  928.  
  929.         BfDrawSetPen(BORDER_COL_7);
  930.         BfDrawLine(1,1,w-1,1);
  931.         BfDrawLine(1,1,1,h-1);
  932.         if (y2+2<bf_sh) BfDrawLine(1,y2+2,w-1,y2+2);
  933.  
  934.         BfDrawSetPen(BORDER_COL_3);
  935.         BfDrawLine(0,h,w,h);
  936.         BfDrawLine(w,0,w,h);
  937.  
  938.         BfDrawSetPen(BORDER_COL_4);
  939.         BfDrawLine(1,h-1,w-1,h-1);
  940.         BfDrawLine(w-1,1,w-1,h-1);
  941.  
  942.         if (intrack) BfDrawSetPen(SCROLLER_COL_4); else BfDrawSetPen(SCROLLER_COL_3);
  943.         BfDrawRectangle(x1,y1,x2,y2);
  944.  
  945.         if (intrack) BfDrawSetPen(SCROLLER_COL_2); else BfDrawSetPen(SCROLLER_COL_1);
  946.         BfDrawLine(x1,y1,x1+1,y1);
  947.  
  948.         if (intrack) BfDrawSetPen(SCROLLER_COL_4); else BfDrawSetPen(SCROLLER_COL_3);
  949.         BfDrawLine(x1  ,y2,x1+1,y2);
  950.         BfDrawLine(x2-1,y1,x2  ,y1);
  951.  
  952.  
  953.         if (intrack) BfDrawSetPen(SCROLLER_COL_5); else BfDrawSetPen(SCROLLER_COL_4);
  954.         BfDrawLine(x2-1,y2,x2,y2);
  955.  
  956.         if (intrack) BfDrawSetPen(SCROLLER_COL_3); else BfDrawSetPen(SCROLLER_COL_2);
  957.         BfDrawLine(x1  ,y1+1,x1  ,y2-1);
  958.         BfDrawLine(x1+1,y1  ,x2-1,y1  );
  959.  
  960.         if (intrack) BfDrawSetPen(SCROLLER_COL_5); else BfDrawSetPen(SCROLLER_COL_4);
  961.         BfDrawLine(x1+1,y2,x2,y2);
  962.         BfDrawLine(x2  ,y1,x2,y2);
  963.  
  964.         x = y1+3;
  965.         if ((y2-y1-7)>8) x = y1+((y2)-(y1)-7)/2-4+4;
  966.  
  967.         for (n=0; n<4 && x<y2-3; x+=2,n++)
  968.         {
  969.             if (intrack) BfDrawSetPen(SCROLLER_COL_2); else BfDrawSetPen(SCROLLER_COL_1);
  970.             BfDrawLine(x1+3,x,x1+4,x);
  971.  
  972.             if (intrack) BfDrawSetPen(SCROLLER_COL_3); else BfDrawSetPen(SCROLLER_COL_2);
  973.             BfDrawLine(x1+4,x,x2-4,x);
  974.  
  975.             if (intrack) BfDrawSetPen(SCROLLER_COL_6); else BfDrawSetPen(SCROLLER_COL_5);
  976.             BfDrawLine(x1+4,x+1,x2-3,x+1);
  977.         }
  978.  
  979.         BfDrawSetPen(BORDER_COL_11);
  980.         BfDrawLine(0,y1-1,w,y1-1);
  981.         BfDrawLine(0,y2+1,w,y2+1);
  982.  
  983.         BfDrawSetPen(BORDER_COL_8);
  984.         BfDrawLine(0,y2+2,w,y2+2);
  985.  
  986.         BfDrawSetPen(BORDER_COL_7);
  987.         BfDrawLine(1,y2+3,w-1,y2+3);
  988.     }
  989.     else
  990.     {
  991.         BfDrawSetPen(oCOLOR_BG);
  992.         BfDrawRectangle(0,0,bf_sw-1,bf_sh-1);
  993.     }
  994. }
  995.  
  996.  
  997.  
  998.  
  999. class Scroller_H : defScroller_H
  1000. {
  1001.     public:
  1002.         Scroller_H(_id_,_title_,_bi_,_min_,_max_,_val_);
  1003.         CfRedraw(xr1,yr1,xr2,yr2);
  1004. };
  1005.  
  1006.  
  1007. Scroller_H::Scroller_H(_id_,_title_,_bi_,_min_,_max_,_val_)
  1008. {
  1009.     super(_id_,_title_,_bi_,_min_,_max_,_val_);
  1010.     cfTabStop = FALSE; // so it's maclike :-)
  1011.     slThumbMin = 14;
  1012.     slThumbW = slThumbMin;
  1013. }
  1014.  
  1015.  
  1016. Scroller_H::CfRedraw(xr1,yr1,xr2,yr2)
  1017. {
  1018.     BfOffScreenOn();
  1019.  
  1020.     var x1,y1,x2,y2,w,h,x,n;
  1021.     var enabled = CfIsEnabled(TRUE);
  1022.  
  1023.     SlCalcThumbPos();
  1024.  
  1025.     w = bf_sw-1;
  1026.     h = bf_sh-1;
  1027.  
  1028.     x1 = slTx1;
  1029.     x2 = slTx2;
  1030.     y1 = slTy1;
  1031.     y2 = slTy2;
  1032.  
  1033.     if (enabled)
  1034.     {
  1035.         w = bf_sw-1;
  1036.         h = bf_sh-1;
  1037.  
  1038.         x1 = slTx1;
  1039.         x2 = slTx2;
  1040.         y1 = slTy1;
  1041.         y2 = slTy2;
  1042.  
  1043.         BfDrawSetPen(BORDER_COL_5);
  1044.         BfDrawRectangle(0,0,w,h);
  1045.  
  1046.         BfDrawSetPen(BORDER_COL_8);
  1047.         BfDrawLine(0,0,w,0);
  1048.         BfDrawLine(0,0,0,h);
  1049.         if (y2+1<bf_sh) BfDrawLine(0,y2+1,w,y2+1);
  1050.  
  1051.         BfDrawSetPen(BORDER_COL_7);
  1052.         BfDrawLine(1,1,w-1,1);
  1053.         BfDrawLine(1,1,1,h-1);
  1054.         if (y2+2<bf_sh) BfDrawLine(1,y2+2,w-1,y2+2);
  1055.  
  1056.         BfDrawSetPen(BORDER_COL_3);
  1057.         BfDrawLine(0,h,w,h);
  1058.         BfDrawLine(w,0,w,h);
  1059.  
  1060.         BfDrawSetPen(BORDER_COL_4);
  1061.         BfDrawLine(1,h-1,w-1,h-1);
  1062.         BfDrawLine(w-1,1,w-1,h-1);
  1063.  
  1064.         if (intrack) BfDrawSetPen(SCROLLER_COL_4); else BfDrawSetPen(SCROLLER_COL_3);
  1065.         BfDrawRectangle(x1,y1,x2,y2);
  1066.  
  1067.         if (intrack) BfDrawSetPen(SCROLLER_COL_2); else BfDrawSetPen(SCROLLER_COL_1);
  1068.         BfDrawLine(x1,y1,x1+1,y1);
  1069.  
  1070.         if (intrack) BfDrawSetPen(SCROLLER_COL_4); else BfDrawSetPen(SCROLLER_COL_3);
  1071.         BfDrawLine(x1  ,y2,x1+1,y2);
  1072.         BfDrawLine(x2-1,y1,x2  ,y1);
  1073.  
  1074.  
  1075.         if (intrack) BfDrawSetPen(SCROLLER_COL_5); else BfDrawSetPen(SCROLLER_COL_4);
  1076.         BfDrawLine(x2-1,y2,x2,y2);
  1077.  
  1078.         if (intrack) BfDrawSetPen(SCROLLER_COL_3); else BfDrawSetPen(SCROLLER_COL_2);
  1079.         BfDrawLine(x1  ,y1+1,x1  ,y2-1);
  1080.         BfDrawLine(x1+1,y1  ,x2-1,y1  );
  1081.  
  1082.         if (intrack) BfDrawSetPen(SCROLLER_COL_5); else BfDrawSetPen(SCROLLER_COL_4);
  1083.         BfDrawLine(x1+1,y2,x2,y2);
  1084.         BfDrawLine(x2  ,y1,x2,y2);
  1085.  
  1086.  
  1087.         x = x1+3;
  1088.         if ((x2-x1-7)>8) x = x1+((x2)-(x1)-7)/2-4+4;
  1089.  
  1090.         for (n=0; n<4 && x<x2-3; x+=2,n++)
  1091.         {
  1092.             if (intrack) BfDrawSetPen(SCROLLER_COL_2); else BfDrawSetPen(SCROLLER_COL_1);
  1093.             BfDrawLine(x,y1+3,x,y1+4);
  1094.  
  1095.             if (intrack) BfDrawSetPen(SCROLLER_COL_3); else BfDrawSetPen(SCROLLER_COL_2);
  1096.             BfDrawLine(x,y1+4,x,y2-4);
  1097.  
  1098.             if (intrack) BfDrawSetPen(SCROLLER_COL_6); else BfDrawSetPen(SCROLLER_COL_5);
  1099.             BfDrawLine(x+1,y1+4,x+1,y2-3);
  1100.         }
  1101.  
  1102.         BfDrawSetPen(BORDER_COL_11);
  1103.         BfDrawLine(x1-1,0,x1-1,h);
  1104.         BfDrawLine(x2+1 ,0,x2+1,h);
  1105.  
  1106.         BfDrawSetPen(BORDER_COL_8);
  1107.         BfDrawLine(x2+2,0,x2+2,h);
  1108.  
  1109.         BfDrawSetPen(BORDER_COL_7);
  1110.         BfDrawLine(x2+3,1,x2+3,h-1);
  1111.     }
  1112.     else
  1113.     {
  1114.         BfDrawSetPen(oCOLOR_BG);
  1115.         BfDrawRectangle(0,0,bf_sw-1,bf_sh-1);
  1116.     }
  1117. }
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123. class MenuText : defMenuText
  1124. {
  1125.     public:
  1126.         MenuText(_id_,_title_,_bi_,_pool_,_pic_,_shortcut_,_val_,_dest_);
  1127.         CfRedraw(xr1,yr1,xr2,yr2);
  1128. };
  1129.  
  1130.  
  1131. MenuText::MenuText(_id_,_title_,_bi_,_pool_,_pic_,_shortcut_,_val_,_dest_)
  1132. {
  1133.     super(_id_,_title_,_bi_,_pool_,_pic_,_shortcut_,_val_,_dest_);
  1134. }
  1135.  
  1136.  
  1137. MenuText::CfRedraw(xr1,yr1,xr2,yr2)
  1138. {
  1139.     var x=0,y=0,w,h,bg,fg;
  1140.  
  1141.     if (CfGetFocus()==FOCUS_ON) { bg = MENU_COL_1; fg = BORDER_COL_0; }
  1142.     else { bg = COLOR_BG; fg = COLOR_TEXT; }
  1143.  
  1144. //println("draw ",bf_title);
  1145.  
  1146.     cfTabStop = FALSE; // so it's maclike :-)
  1147.  
  1148.     BfDrawSetPen(bg);
  1149.     BfDrawRectangle(0,0,bf_sw-1,bf_sh-1);
  1150.  
  1151.     var xx=0,yy=0;
  1152.     var id = pic % 20;
  1153.  
  1154.     if (pic && col_0)
  1155.     {
  1156.         var iw,ih;
  1157.         w = col_0;
  1158.         h = bf_sh-2;
  1159.  
  1160.         var state = 0;
  1161.         if (CfIsDisabled(TRUE)) state |= STATE_DISABLED;
  1162.  
  1163.         if (CfGetFocus()==FOCUS_ON)
  1164.         {
  1165.             state |= STATE_2NDSTATE;
  1166.  
  1167.             BfDrawSetPen(bg);
  1168.             BfDrawRectangle(1,1,w-1,h-1);
  1169.  
  1170.             iconpool->GetIconDim(pool,pic,&iw,&ih);
  1171.             if (iw && ih) iconpool->DrawIcon(pool,pic,this,xx+1+(w-iw)/2,yy+1+(h-ih)/2,iw,ih,state);
  1172.         }
  1173.         else
  1174.         {
  1175.             BfDrawSetPen(bg);
  1176.             BfDrawRectangle(1,1,w-3,h-3);
  1177.  
  1178.             iconpool->GetIconDim(pool,pic,&iw,&ih);
  1179.             if (iw && ih) iconpool->DrawIcon(pool,pic,this,xx+1+(w-iw)/2,yy+1+(h-ih)/2,iw,ih,state);
  1180.         }
  1181.         x += col_0;
  1182.         y  = 0;
  1183.  
  1184. //        if (CfGetFocus()==FOCUS_ON)
  1185. //            CfDrawBorder(x,y,bf_sw-1,bf_sh-1,BORDER_THIN_IN);
  1186.  
  1187.     }
  1188.     else
  1189.     {
  1190. //        if (CfGetFocus()==FOCUS_ON)
  1191. //            CfDrawBorder(x,y,bf_sw-1,bf_sh-1,BORDER_THIN_IN);
  1192.  
  1193.         if (bf_value)
  1194.         {
  1195.             if (CfIsEnabled(TRUE))
  1196.             {
  1197.                 GaDrawCheckMark(x,y-1+(bf_sh-10)/2,fg);
  1198.             }
  1199.             else
  1200.             {
  1201.                 //GaDrawCheckMark(x+1,y-1+(bf_sh-10)/2+1,COLOR_EDGEWH);
  1202.                 GaDrawCheckMark(x,y-1+(bf_sh-10)/2,COLOR_EDGEDK);
  1203.             }
  1204.         }
  1205.         x += col_0;
  1206.         y = 0;
  1207.     }
  1208.     w =  bf_sw-col_0-col_2-col_3;
  1209.  
  1210.     var addx = 6+1;
  1211.     if (small) addx=6;
  1212.  
  1213.     if (CfIsEnabled(TRUE))
  1214.     {
  1215.         BfDrawSetTextCol(fg,bg);
  1216.         CfDrawTextClippedCenter(x+addx,y+1,w-addx-1,bf_sh-y-2,bf_title,CENTER_VERT);
  1217.     }
  1218.     else
  1219.     {
  1220.         //BfDrawSetTextCol(COLOR_EDGEWH,COLOR_TRANS);
  1221.         //CfDrawTextClippedCenter(x+addx+1,y+1+1,w-addx-1,bf_sh-y-2,bf_title,CENTER_VERT);
  1222.         BfDrawSetTextCol(COLOR_EDGEDK,COLOR_TRANS);
  1223.         CfDrawTextClippedCenter(x+addx,y+0+1,w-addx-1,bf_sh-y-2,bf_title,CENTER_VERT);
  1224.     }
  1225.  
  1226.     x += w;
  1227.     w = col_2;
  1228.  
  1229.     if (shortcut && sizeof(shortcut)>0)
  1230.     {
  1231.         if (CfIsEnabled(TRUE))
  1232.         {
  1233.             BfDrawSetTextCol(fg,bg);
  1234.             CfDrawTextClippedCenter(x,y+1,w-12,bf_sh-y-2,shortcut,ALIGN_RIGHT|CENTER_VERT);
  1235.         }
  1236.         else
  1237.         {
  1238.         //    BfDrawSetTextCol(COLOR_EDGEWH,COLOR_TRANS);
  1239.         //    CfDrawTextClippedCenter(x+1,y+1+1,w-12,bf_sh-y-2,shortcut,ALIGN_RIGHT|CENTER_VERT);
  1240.             BfDrawSetTextCol(COLOR_EDGEDK,COLOR_TRANS);
  1241.             CfDrawTextClippedCenter(x,y+0+1,w-12,bf_sh-y-2,shortcut,ALIGN_RIGHT|CENTER_VERT);
  1242.         }
  1243.     }
  1244.  
  1245.     x += w;
  1246.     w = col_3;
  1247.  
  1248.     if (forcearrow || (menuobject && menuobject->submenu && !noarrow))
  1249.     {
  1250.         var n=-4;
  1251.         BfDrawSetPen(fg);
  1252.         BfDrawLine(x-3-n,bf_sh/2-3,x-3-n,bf_sh/2+3);
  1253.         BfDrawLine(x-2-n,bf_sh/2-2,x-2-n,bf_sh/2+2);
  1254.         BfDrawLine(x-1-n,bf_sh/2-1,x-1-n,bf_sh/2+1);
  1255.         BfDrawLine(x-0-n,bf_sh/2  ,x-0-n,bf_sh/2);
  1256.     }
  1257. }
  1258.  
  1259.  
  1260.  
  1261.  
  1262. class CommandGadget : defCommandGadget
  1263. {
  1264.     public:
  1265.         CommandGadget(_cmdid_,_flags_,_bi_,_parent_,_d2_,_d3_);
  1266.         CfRedraw(xr1,yr1,xr2,yr2);
  1267. };
  1268.  
  1269.  
  1270. CommandGadget::CommandGadget(_cmdid_,_flags_,_bi_,_parent_,_d2_,_d3_)
  1271. {
  1272.     super(_cmdid_,_flags_,_bi_,_parent_,_d2_,_d3_);
  1273. }
  1274.  
  1275.  
  1276. CommandGadget::CfRedraw(xr1,yr1,xr2,yr2)
  1277. {
  1278.     var x=0,y=0,w,h,bg,fg = COLOR_TEXT;
  1279.  
  1280.     var value = bf_value;
  1281.  
  1282.     BfOffScreenOn();
  1283.     if (CfGetFocus()==FOCUS_ON && flags&CMD_MENU) bg = MENU_COL_1;
  1284.     else bg = COLOR_BG;
  1285.  
  1286. //println("draw ",bf_title);
  1287.  
  1288.     BfDrawSetPen(bg);
  1289.     BfDrawRectangle(0,0,bf_sw-1,bf_sh-1);
  1290.  
  1291.     if (!cmdptr)
  1292.     {
  1293.         BfDrawSetTextCol(COLOR_EDGEWH,COLOR_TRANS);
  1294.         CfDrawTextClippedCenter(1,1,bf_sw-2,bf_sh-2,"???",CENTER_HORIZ|CENTER_VERT);
  1295.         BfDrawSetTextCol(COLOR_EDGEDK,COLOR_TRANS);
  1296.         CfDrawTextClippedCenter(0,0,bf_sw-2,bf_sh-2,"???",CENTER_HORIZ|CENTER_VERT);
  1297.         return;
  1298.     }
  1299.  
  1300.     var xx=0,yy=0,hh=bf_sh,ww=bf_sw;
  1301.  
  1302.     var state = 0;
  1303.  
  1304.     if (CfIsDisabled(TRUE)) state |= STATE_DISABLED;
  1305.  
  1306.     if (flags&CMD_BUTTONLIKE)
  1307.     {
  1308.         if (value) state |= STATE_2NDSTATE;
  1309.  
  1310.         CfDrawBorder(x,y,ww-1,hh-1,value ? ICON_BORDERS_IN : ICON_BORDERS_OUT);
  1311.         xx++;
  1312.         yy++;
  1313.         hh-=2;
  1314.         ww-=2;
  1315.     }
  1316.     else if (flags&CMD_MENU)
  1317.     {
  1318.         if (value) state |= STATE_2NDSTATE;
  1319.         if (CfGetFocus()==FOCUS_ON)
  1320.         {
  1321.             state ^= STATE_2NDSTATE;
  1322.  
  1323.             bg = MENU_COL_1;
  1324.             fg = BORDER_COL_0;
  1325.             BfDrawSetPen(bg);
  1326.             BfDrawRectangle(0,0,bf_sw-1,bf_sh-1);
  1327.         }
  1328.         xx++;
  1329.         yy++;
  1330.         hh-=2;
  1331.         ww-=2;
  1332.     }
  1333.  
  1334.     if (flags&CMD_VERT)
  1335.     {
  1336.         if ((flags&CMD_PIC) && iconpool)
  1337.         {
  1338.             var ipool = cmdptr->GetPoolNum();
  1339.             var inum  = cmdptr->GetIconNum();
  1340.  
  1341.             iconpool->GetIconDim(ipool,inum,&w,&h);
  1342.  
  1343.             var bw=w,bh=h;
  1344.  
  1345.             switch (iconsize)
  1346.             {
  1347.                 case ICONS_MEDIUM:    bw = bh = ICONSIZE_MEDIUM; break;
  1348.                 case ICONS_SMALL:        bw = bh = ICONSIZE_SMALL; break;
  1349.                 case ICONS_BIG:     bw = bh = ICONSIZE_BIG; break;
  1350.             }
  1351.  
  1352.             if ((flags & CMD_SMALLICONS) && h>0) bh = hh;
  1353.             if (bw>col_0) bw = col_0;
  1354.  
  1355.             if (h>0 && h>bh)
  1356.             {
  1357.                 var aspect;
  1358.                 aspect = float(bh)/float(h);
  1359.                 h = bh;
  1360.                 w = int(w*aspect);
  1361.             }
  1362.             if (w>0 && w>bw)
  1363.             {
  1364.                 var aspect;
  1365.                 aspect = float(bw)/float(w);
  1366.                 w = bw;
  1367.                 h = int(h*aspect);
  1368.             }
  1369.             iconpool->DrawIcon(ipool,inum,this,xx+(ww-w)/2,yy+(col_0-h)/2,w,h,state);
  1370.  
  1371.             yy += col_0;
  1372.         }
  1373.  
  1374.         var text = cmdptr->GetTitle();
  1375.         if ((flags&CMD_TEXT) && text && sizeof(text)>0)
  1376.         {
  1377.             var addy = 3;
  1378.             if (CfIsEnabled(TRUE))
  1379.             {
  1380.                 BfDrawSetTextCol(fg,bg);
  1381.                 CfDrawTextClippedCenter(xx,yy+addy,ww,col_1-addy,text,CENTER_HORIZ);
  1382.             }
  1383.             else
  1384.             {
  1385.                 //BfDrawSetTextCol(COLOR_EDGEWH,COLOR_TRANS);
  1386.                 //CfDrawTextClippedCenter(xx+1,yy+addy+1,ww,col_1-addy-1,text,CENTER_HORIZ);
  1387.                 BfDrawSetTextCol(COLOR_EDGEDK,COLOR_TRANS);
  1388.                 CfDrawTextClippedCenter(xx,yy+addy,ww,col_1-addy,text,CENTER_HORIZ);
  1389.             }
  1390.             yy += col_1;
  1391.         }
  1392.     }
  1393.     else
  1394.     {
  1395.         h = 0;
  1396.         var ipool, inum;
  1397.         if (flags&CMD_PIC)
  1398.         {
  1399.             ipool = cmdptr->GetPoolNum();
  1400.             inum  = cmdptr->GetIconNum();
  1401.  
  1402.             if (iconpool) iconpool->GetIconDim(ipool,inum,&w,&h);
  1403.         }
  1404.  
  1405.         if (h>0)
  1406.         {
  1407.             // Icon zeichnen
  1408.  
  1409.             var sub = 0;
  1410.             if (flags & CMD_MENU) sub = 2;
  1411.  
  1412.             var bw=w,bh=h;
  1413.  
  1414.             switch (iconsize)
  1415.             {
  1416.                 case ICONS_MEDIUM:    bw = bh = ICONSIZE_MEDIUM; break;
  1417.                 case ICONS_SMALL:        bw = bh = ICONSIZE_SMALL; break;
  1418.                 case ICONS_BIG:     bw = bh = ICONSIZE_BIG; break;
  1419.             }
  1420.  
  1421.             if (bw>col_0) bw = col_0;
  1422.  
  1423.             if ((flags & CMD_SMALLICONS) && h>0) bh = hh;
  1424.  
  1425.             if (h>0 && h>bh)
  1426.             {
  1427.                 var aspect;
  1428.                 aspect = float(bh)/float(h);
  1429.                 h = bh;
  1430.                 w = int(w*aspect);
  1431.             }
  1432.             if (w>0 && w>bw)
  1433.             {
  1434.                 var aspect;
  1435.                 aspect = float(bw)/float(w);
  1436.                 w = bw;
  1437.                 h = int(h*aspect);
  1438.             }
  1439.  
  1440.             if (flags&CMD_MENU)
  1441.             {
  1442.                 if (value && CfGetFocus()!=FOCUS_ON)
  1443.                 {
  1444.                     CfDrawBorder(xx-1,yy-1,w+1,hh+1,BORDER_THIN_IN);
  1445.                 }
  1446.             }
  1447.             iconpool->DrawIcon(ipool,inum,this,xx+(col_0-w)/2,yy+(hh-h)/2,w,h,state);
  1448.             xx += col_0;
  1449.             ww -= col_0;
  1450.         }
  1451.         else
  1452.         {
  1453.             if (flags&CMD_MENU)
  1454.             {
  1455.                 if (value)
  1456.                 {
  1457.                     if (CfIsEnabled(TRUE))
  1458.                     {
  1459.                         GaDrawCheckMark(xx,yy-1+(hh-10)/2,fg);
  1460.                     }
  1461.                     else
  1462.                     {
  1463.                         //GaDrawCheckMark(xx+1,yy-1+(hh-10)/2+1,COLOR_EDGEWH);
  1464.                         GaDrawCheckMark(xx,yy-1+(hh-10)/2,COLOR_EDGEDK);
  1465.                     }
  1466.                 }
  1467.                 xx += col_0;
  1468.                 ww -= col_0;
  1469.             }
  1470.         }
  1471.  
  1472.         var www = col_1;
  1473.         if (www>ww) www=ww;
  1474.  
  1475.         var text = cmdptr->GetTitle();
  1476.         if ((flags&CMD_TEXT) && text && sizeof(text)>0)
  1477.         {
  1478.             var addx = 6;
  1479.             www-=2*addx;
  1480.             if (CfIsEnabled(TRUE))
  1481.             {
  1482.                 BfDrawSetTextCol(fg,bg);
  1483.                 CfDrawTextClippedCenter(xx+addx,yy,www,hh,text,CENTER_VERT);
  1484.             }
  1485.             else
  1486.             {
  1487.                 //BfDrawSetTextCol(COLOR_EDGEWH,COLOR_TRANS);
  1488.                 //CfDrawTextClippedCenter(xx+addx+1,yy+1,www,hh-2,text,CENTER_VERT);
  1489.                 BfDrawSetTextCol(COLOR_EDGEDK,COLOR_TRANS);
  1490.                 CfDrawTextClippedCenter(xx+addx,yy,www,hh-2,text,CENTER_VERT);
  1491.             }
  1492.             xx += col_1;
  1493.         }
  1494.  
  1495.         text = cmdptr->GetShortString(-1);
  1496.         if ((flags&CMD_SHORTCUT) && text && sizeof(text)>0)
  1497.         {
  1498.             var addx = 6;
  1499.             if (CfIsEnabled(TRUE))
  1500.             {
  1501.                 BfDrawSetTextCol(fg,bg);
  1502.                 CfDrawTextClippedCenter(xx+addx,yy,col_2-2*addx,hh,text,ALIGN_RIGHT|CENTER_VERT);
  1503.             }
  1504.             else
  1505.             {
  1506.                 //BfDrawSetTextCol(COLOR_EDGEWH,COLOR_TRANS);
  1507.                 //CfDrawTextClippedCenter(xx+addx+1,yy+1,col_2-2*addx,hh-2,text,ALIGN_RIGHT|CENTER_VERT);
  1508.                 BfDrawSetTextCol(COLOR_EDGEDK,COLOR_TRANS);
  1509.                 CfDrawTextClippedCenter(xx+addx,yy,col_2-2*addx,hh-2,text,ALIGN_RIGHT|CENTER_VERT);
  1510.             }
  1511.             xx += col_2;
  1512.         }
  1513.     }
  1514.     if (commandeditmode && !(flags & CMD_EDITPALETTE) && (flags & CMD_BUTTONLIKE))
  1515.     {
  1516.         BfDrawSetPen(COLOR_EDITBORDER);
  1517.         //var x1=1,y1=1,x2=bf_sw-2,y2=bf_sh-2;
  1518.         var x1=0,y1=0,x2=bf_sw-1,y2=bf_sh-1;
  1519.         BfDrawLine(x1,y1,x2,y1);
  1520.         BfDrawLine(x2,y1,x2,y2);
  1521.         BfDrawLine(x2,y2,x1,y2);
  1522.         BfDrawLine(x1,y2,x1,y1);
  1523.     }
  1524. }
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531. class MacBar : Gadget
  1532. {
  1533.     public:
  1534.         var active,value;
  1535.  
  1536.         MacBar(_id_,_title_,_bi_,_min_,_max_,_val_);
  1537.  
  1538.         GaTrackMouseAction(b,mx,my,qa,data);
  1539.         GaAction(b,mx,my,qa,msg);
  1540. //        GaCalcSize();
  1541.         CfRedraw(xr1,yr1,xr2,yr2);
  1542. //        GaKeyboard(msg,k,qa);
  1543. }
  1544.  
  1545.  
  1546. MacBar::MacBar(_id_,_title_,_bi_,_min_,_max_,_val_)
  1547. {
  1548.     super(_id_,_title_,_bi_,_min_,_max_,_val_);
  1549.     active = FALSE;
  1550.     value = 0;
  1551. }
  1552.  
  1553. MacBar::GaTrackMouseAction(b,mx,my,qa,data)
  1554. {
  1555.     var x,y,w,h;
  1556.     x = 1;
  1557.     h = w = 13-1;
  1558.     y = (h-13)/2;
  1559.  
  1560.     if (GaRectHit(x,y,x+w,x+h,mx,my)) data=TRUE;
  1561.     else data=FALSE;
  1562.  
  1563.     value = data;
  1564.     Redraw();
  1565.  
  1566.     return TRUE;
  1567. }
  1568.  
  1569. MacBar::GaAction(b,mx,my,qa,msg)
  1570. {
  1571.     var x,y,w,h;
  1572.     x = 1;
  1573.     h = w = 13-1;
  1574.     y = (h-13)/2;
  1575.  
  1576.     if (GaRectHit(x,y,x+w,x+h,mx,my))
  1577.     {
  1578.         value = 0;
  1579.         if (GaTrackMouse(b,mx,my,qa,&value) && value)
  1580.         {
  1581.             value = 0;
  1582.             Redraw();
  1583.             SendParentMessage(ActionMessage(GUI_DIALOG_CLOSE,TRUE));
  1584.         }
  1585.     }
  1586. }
  1587.  
  1588. MacBar::CfRedraw(xr1,yr1,xr2,yr2)
  1589. {
  1590.     BfOffScreenOn();
  1591.  
  1592.     var i,x,y,w,h,x1,x2;
  1593.     var bg = COLOR_BG, fg = COLOR_TEXT;
  1594.  
  1595.     x = 0;
  1596.     y = 0;
  1597.     w = bf_sw-1;
  1598.     h = bf_sh-1;
  1599.  
  1600.     BfDrawSetPen(bg);
  1601.     BfDrawRectangle(0,0,bf_sw-1,bf_sh-1);
  1602.  
  1603.     i = BfDrawGetTextWidth(bf_title);
  1604.     if (i>w-17) i=w-17;
  1605.  
  1606.     x1 = x+13+(w-13-i)/2-4;
  1607.     x2 = x1+4+i+4;
  1608.  
  1609.     w-=3;
  1610.     x+=16;
  1611.  
  1612.     if (x<x1 && x2<x+w && active)
  1613.     {
  1614.         for (y=0;y<h-4;)
  1615.         {
  1616.             BfDrawSetPen(BORDER_COL_0);
  1617.             BfDrawLine(x,y,x1,y);
  1618.             BfDrawLine(x2,y,x+w,y);
  1619.             y++;
  1620.  
  1621.             BfDrawSetPen(BORDER_COL_8);
  1622.             BfDrawLine(x+1,y,x1+1,y);
  1623.             BfDrawLine(x2+1,y,x+w+1,y);
  1624.             y++;
  1625.         }
  1626.     }
  1627.  
  1628.     if (active)
  1629.     {
  1630.         x = 1;
  1631.         h = w = 13-1;
  1632.         y = (h-13)/2;
  1633.  
  1634.         BfDrawSetPen(BORDER_COL_8);
  1635.         BfDrawLine(x,y,x+w-1,y);
  1636.         BfDrawLine(x,y,x,y+h-1);
  1637.  
  1638.         BfDrawSetPen(BORDER_COL_0);
  1639.         BfDrawLine(x+1,y+h,x+w,y+h);
  1640.         BfDrawLine(x+w,y+1,x+w,y+h);
  1641.  
  1642.         x++;y++;
  1643.         w-=2;h-=2;
  1644.         BfDrawSetPen(BORDER_COL_10);
  1645.         BfDrawLine(x  ,y  ,x+w,y);
  1646.         BfDrawLine(x+w,y  ,x+w,y+h);
  1647.         BfDrawLine(x+w,y+h,x  ,y+h);
  1648.         BfDrawLine(x  ,y+h,x  ,y);
  1649.  
  1650.         x++;y++;
  1651.         w-=2;h-=2;
  1652.  
  1653.         BfDrawSetPen(BORDER_COL_0);
  1654.         BfDrawLine(x,y,x+1,y);
  1655.  
  1656.         BfDrawSetPen(BORDER_COL_3);
  1657.         BfDrawLine(x+1,y,x+w,y);
  1658.         BfDrawLine(x  ,y,x  ,y+h);
  1659.  
  1660.         BfDrawSetPen(BORDER_COL_6);
  1661.         BfDrawLine(x+w,y+1,x+w,y+h);
  1662.         BfDrawLine(x+1,y+h,x+w,y+h);
  1663.  
  1664.         x++;y++;
  1665.         w-=2;h-=2;
  1666.  
  1667.  
  1668.  
  1669.         if (intrack && value)// CfGetFocus()==FOCUS_ON)
  1670.         {
  1671.             BfDrawSetPen(BORDER_COL_6);
  1672.             BfDrawRectangle(x-1,y-1,x+w+1,y+h+1);
  1673.         }
  1674.         else
  1675.         {
  1676.             BfDrawSetPen(BORDER_COL_6);    BfDrawLine(x+0,y+0,x+1,y+0); BfDrawLine(x+0,y+1,x+0,y+1);
  1677.             BfDrawSetPen(BORDER_COL_5);    BfDrawLine(x+2,y+0,x+3,y+0); BfDrawLine(x+1,y+1,x+2,y+1);
  1678.             BfDrawSetPen(BORDER_COL_4);    BfDrawLine(x+4,y+0,x+5,y+0); BfDrawLine(x+3,y+1,x+4,y+1);
  1679.             BfDrawSetPen(BORDER_COL_3);    BfDrawLine(x+6,y+0,x+6,y+0); BfDrawLine(x+5,y+1,x+6,y+1);
  1680.  
  1681.             BfDrawSetPen(BORDER_COL_5);    BfDrawLine(x+0,y+2,x+1,y+2); BfDrawLine(x+0,y+3,x+0,y+3);
  1682.             BfDrawSetPen(BORDER_COL_4);    BfDrawLine(x+2,y+2,x+3,y+2); BfDrawLine(x+1,y+3,x+2,y+3);
  1683.             BfDrawSetPen(BORDER_COL_3);    BfDrawLine(x+4,y+2,x+5,y+2); BfDrawLine(x+3,y+3,x+4,y+3);
  1684.             BfDrawSetPen(BORDER_COL_2);    BfDrawLine(x+6,y+2,x+6,y+2); BfDrawLine(x+5,y+3,x+6,y+3);
  1685.  
  1686.             BfDrawSetPen(BORDER_COL_4);    BfDrawLine(x+0,y+4,x+1,y+4); BfDrawLine(x+0,y+5,x+0,y+5);
  1687.             BfDrawSetPen(BORDER_COL_3);    BfDrawLine(x+2,y+4,x+3,y+4); BfDrawLine(x+1,y+5,x+2,y+5);
  1688.             BfDrawSetPen(BORDER_COL_2);    BfDrawLine(x+4,y+4,x+5,y+4); BfDrawLine(x+3,y+5,x+4,y+5);
  1689.             BfDrawSetPen(BORDER_COL_1);    BfDrawLine(x+6,y+4,x+6,y+4); BfDrawLine(x+5,y+5,x+6,y+5);
  1690.  
  1691.             BfDrawSetPen(BORDER_COL_3);    BfDrawLine(x+0,y+6,x+1,y+6);
  1692.             BfDrawSetPen(BORDER_COL_2);    BfDrawLine(x+2,y+6,x+3,y+6);
  1693.             BfDrawSetPen(BORDER_COL_1);    BfDrawLine(x+4,y+6,x+5,y+6);
  1694.             BfDrawSetPen(BORDER_COL_0);    BfDrawLine(x+6,y+6,x+6,y+6);
  1695.         }
  1696.     }
  1697.  
  1698.     x = 0;
  1699.     y = 0;
  1700.     w = bf_sw-1;
  1701.     h = bf_sh-2;
  1702.  
  1703.     BfDrawSetTextCol(COLOR_TEXT,bg);
  1704.     BfDrawTextNew(bf_title,x1+4,0,i,h,TEXT_STD);
  1705.  
  1706.     if (active)
  1707.     {
  1708.          BfDrawSetPen(BORDER_COL_6);
  1709.         BfDrawLine(x,h,w,h);
  1710.     }
  1711.     h++;
  1712.  
  1713.     if (active) BfDrawSetPen(BORDER_COL_11); else BfDrawSetPen(BORDER_COL_6);
  1714.     BfDrawLine(x,h,w,h);
  1715.  
  1716. }
  1717.  
  1718.  
  1719.  
  1720. // defDialogBarH vertical
  1721. class DialogBarH : DialogBar
  1722. {
  1723.     public:
  1724.         DialogBarH(_id_,_title_,_bi_,_dragtype_,_d2_,_flags_);
  1725.         CbMessage(m);
  1726. };
  1727.  
  1728.  
  1729.  
  1730. DialogBarH::DialogBarH(_id_,_title_,_bi_,_dragtype_,_d2_,_flags_)
  1731. {
  1732.     var c;
  1733.  
  1734.     super(_id_,_title_,_bi_,_dragtype_,_d2_,_flags_);
  1735.  
  1736.     BgSetBorderStyle(BORDER_NONE);
  1737.     GgSetBorder(1,1,1,1);
  1738.     GgSetSpace(1,1);
  1739.  
  1740.     var bi=new(BfInfo);
  1741.     bi->pos = BFH_SCALEFIT;
  1742.     bi->initw = SizeChr(4);
  1743.  
  1744.     if (remove && !nobuttons)
  1745.     {
  1746. /*
  1747.         if (!bf_title || sizeof(bf_title)==0)
  1748.         {
  1749.             bi->initw = SizePix(8);
  1750.             bi->inith = SizePix(8);
  1751.             c = BfAddChild(DummyFrame,0,0,bi,0,0,0);
  1752.             c->cfHandleFocus=TRUE;
  1753.         }
  1754.         else
  1755. */
  1756. /*
  1757.         bi->initw = SizePix(11);
  1758.         bi->inith = SizePix(11);
  1759.         bi->pos = BFH_CENTER | BFV_CENTER;
  1760.         c = new(classIconButton,GUI_DIALOG_CLOSE,"",bi,0,IDM_CM_CLOSEWINDOW,BORDER_NONE,BORDER_NONE);
  1761.         BfInsertChild(c,BF_INSERT_LAST);
  1762.             c->cfHandleFocus = FALSE;
  1763.             c->cfTabStop     = FALSE;
  1764.  
  1765.         bi->initw = SizePix(2);
  1766.         bi->inith = 0;
  1767.         c = BfAddChild(DummyFrame,0,"",bi,0,0,0);
  1768.             c->cfHandleFocus = FALSE;
  1769.             c->cfTabStop     = FALSE;
  1770. */
  1771.         bi->initw = 0;
  1772.         bi->inith = 0;
  1773.         bi->pos = BFH_SCALEFIT;
  1774.  
  1775.         {
  1776.             titlegad = BfAddChild(MacBar,0,bf_title,bi,0,0,0);
  1777.             titlegad->cfHandleFocus=TRUE;
  1778.         }
  1779.  
  1780. /*
  1781.         c = BfAddChild(classButton,GUI_DIALOG_MINIMIZE,"-",bi,BORDER_THIN_OUT,BORDER_THIN_IN,0);
  1782.             c->cfHandleFocus = FALSE;
  1783.             c->cfTabStop     = FALSE;
  1784.         c = BfAddChild(classButton,GUI_DIALOG_RELEASE,"o",bi,BORDER_THIN_OUT,BORDER_THIN_IN,0);
  1785.             c->cfHandleFocus = FALSE;
  1786.             c->cfTabStop     = FALSE;
  1787. */
  1788.  
  1789.     //    BfSetDefaultColor(COLOR_BG,vector(216/255.0,216/255.0,216/255.0));
  1790.     //    BfSetDefaultColor(COLOR_BGGADGET,vector(216/255.0,216/255.0,216/255.0));
  1791.         BfSetDefaultColor(COLOR_BGFOCUS,vector(100/255.0,100/255.0,100/255.0));
  1792.         BfSetDefaultColor(COLOR_TEXT,svector(0/255.0,0/255.0,0/255.0,FALSE));
  1793.         BfSetDefaultColor(COLOR_TEXTFOCUS,COLOR_DBARFG2);
  1794.     }
  1795.     else
  1796.     {
  1797.         bi->pos = BFH_SCALEFIT;
  1798.         bi->initw = SizePix(8);
  1799.         bi->inith = SizePix(8);
  1800.         BfAddChild(DummyFrame,0,"",bi,0,0,12345);
  1801.         GgSetBorder(0,0,0,0);
  1802.         GgSetSpace(0,0);
  1803.         BgSetBorderStyle(BORDER_NONE);//GROUP_IN);
  1804.     }
  1805. }
  1806.  
  1807.  
  1808.  
  1809. DialogBarH::CbMessage(m)
  1810. {
  1811.     var flag,n,res;
  1812.  
  1813.     switch(m->GetId())
  1814.     {
  1815. /*
  1816.         case BFM_TITLECHNG:
  1817.             if (titlegad)
  1818.             {
  1819.                 titlegad->CbMessage(m);
  1820.             }
  1821.             break;
  1822.  
  1823.         case BFM_INPUT:
  1824.             res = super::CbMessage(m);
  1825.  
  1826.             if (!res && m->GetData(BFM_INPUT_DEVICE)==BFM_INPUT_MOUSE)
  1827.             {
  1828.                 var mx,my,b,nn,n = new(BaseContainer,BFM_GET_MANAGERID);
  1829.                 nn = SendParentMessage(n);
  1830.  
  1831.                 b  = m->GetData(BFM_INPUT_CHANNEL);
  1832.                 mx = BfGetInputChannel(BFM_INPUT_MOUSE,b,BFM_INPUT_X);
  1833.                 my = BfGetInputChannel(BFM_INPUT_MOUSE,b,BFM_INPUT_Y);
  1834.                 BfGlobal2Local(&mx,&my);
  1835.  
  1836.                 if (nn && b==BFM_INPUT_MOUSELEFT)
  1837.                 {
  1838.                     if (HandleMouseDrag(mx,my,b,dragtype,nn,FALSE,NULL))
  1839.                         res = TRUE;
  1840.                 }
  1841.             }
  1842.  
  1843.             return res;
  1844. */
  1845.         case BFM_SETACTIVE:
  1846.             flag = m->GetData(BFM_SETACTIVE_DATA);
  1847.             if ((flag==FOCUS_ON) != isactive)
  1848.             {
  1849.                 isactive = (flag==FOCUS_ON);
  1850.  
  1851.                 if (remove && !nobuttons)
  1852.                 {
  1853.                     if (isactive)
  1854.                     {
  1855.                         //BfSetDefaultColor(COLOR_BG,vector(200/255.0,200/255.0,200/255.0));
  1856.                         BfSetDefaultColor(COLOR_TEXT,svector(0/255.0,0/255.0,0/255.0,TRUE));
  1857.                         if (instanceof(titlegad,MacBar)) titlegad->active = TRUE;
  1858.                     }
  1859.                     else
  1860.                     {
  1861.                         //BfSetDefaultColor(COLOR_BG,vector(216/255.0,216/255.0,216/255.0));
  1862.                         BfSetDefaultColor(COLOR_TEXT,svector(0/255.0,0/255.0,0/255.0,FALSE));
  1863.                         if (instanceof(titlegad,MacBar)) titlegad->active = FALSE;
  1864.                     }
  1865.                 }
  1866.  
  1867.                 Redraw();
  1868.             }
  1869.             return BorderGroup::CbMessage(m);
  1870.     }
  1871.     return super::CbMessage(m);
  1872. }
  1873.  
  1874.  
  1875. // ArrowButton
  1876. class ArrowButton : defArrowButton
  1877. {
  1878.     public:
  1879.         ArrowButton(_id_,_title_,_bi_,_d1_,_arrownum_,_d3_);
  1880.  
  1881.         CfRedraw(xr1,yr1,xr2,yr2);
  1882. };
  1883.  
  1884.  
  1885. ArrowButton::ArrowButton(_id_,_title_,_bi_,_d1_,_arrownum_,_d3_)
  1886. {
  1887.     return super(_id_,_title_,_bi_,_d1_,_arrownum_,_d3_);
  1888. }
  1889.  
  1890. ArrowButton::CfRedraw(xr1,yr1,xr2,yr2)
  1891. {
  1892.     if (CfIsEnabled(TRUE)) return super::CfRedraw(xr1,yr1,xr2,yr2);
  1893.     BfDrawSetPen(oCOLOR_BG);
  1894.     BfDrawRectangle(0,0,bf_sw-1,bf_sh-1);
  1895. }
  1896.  
  1897.